﻿using System;
using System.Collections.Generic;
using System.Linq;
using Onshi.POS.Modelo.Entidades;
using Onshi.POS.Modelo.Enumeradores;
using Onshi.POS.Repositorios;
using Onshi.POS.Usuarios.Vistas;

namespace Onshi.POS.Usuarios
{
    public class PerfilesDetallesVerPresentador
    {
        #region Constructores

        public PerfilesDetallesVerPresentador(IPerfilesDetallesVer vista)
        {
            this.vista = vista;
        }

        #endregion

        #region Atributos

        private IPerfilesDetallesVer vista;
        private Perfil perfil;

        #endregion

        #region Propiedades

        private RepositorioPerfil RepositorioPerfil
        {
            get { return new RepositorioPerfil(); }
        }

        #endregion

        #region Metodos

        private void ActualizarLista()
        {
            var perfil = RepositorioPerfil.DevolverPorId(vista.IdPerfil);
            if (perfil == null)
                throw new Exception("El perfil no existe");
            this.perfil = perfil;
        }

        private List<PerfilDetalle> FiltrarLista()
        {
            if (perfil != null && perfil.Detalles != null)
            {
                var consulta = (from item in perfil.Detalles
                                where item.TienePermiso == (vista.TienePermisoFiltro == EnumEstadoCheck.TODOS ? item.TienePermiso : (vista.TienePermisoFiltro == EnumEstadoCheck.SI ? true : false))
                                select item).ToList();
                return consulta;
            }
            else
                return null;
        }

        public void Inicializar()
        {
            ActualizarLista();
            vista.Lista = perfil.Detalles;
            vista.nombre = perfil.Nombre;
        }

        public void Filtrar()
        {
            vista.Lista = FiltrarLista();
        }

        #endregion
    }
}
